1. Field of the Invention
This invention relates to a technique for controlling the state of a node connected to a bus during bus arbitration, and is particularly related to controlling the self identification phase of a device connected to an IEEE 1394 bus. The invention is particularly useful in preventing a given node from transmitting a SELF_ID packet to a parent node when the parent is not yet ready to receive that packet.
2. Description of Related Art
A protocol has been developed for transmitting data at high speeds over a high performance serial bus to which several devices (referred to as xe2x80x9cnodesxe2x80x9d) are connected, wherein each device may be electrically connected to or disconnected from the bus while the bus is in a xe2x80x9cpowered onxe2x80x9d state. This protocol, known as the IEEE 1394 standard, provides for high speed data transmission and real-time transfer of data between multimedia devices. Consistent with this standard, data transfer speeds of 100 Mbps (the actual data speed is 98.304 Mbps), 200 Mbps (the actual data speed is 196.60 Mbps) and 400 Mbps (the actual data speed is 393.216 Mbps) all may be accommodated on the bus. One device, or node, is connected to another device, or node, by a port; and a port that is operable at a higher data transfer speed also is compatible with a lower data transfer speed. Consequently, devices operable at 100 Mbps, 200 Mbps and 400 Mbps all may be connected in the same data network.
The IEEE 1394 protocol adopts the format known as the data/strobe link (DS-Link) in which data is transferred by using two signals on, for example, two different sets of connectors, with one signal representing the data and the other representing the strobe, such as shown in FIG. 1. It will be appreciated that the strobe signal is a two-level signal whose state changes when the data level remains the same for consecutive bit cells. By using this DS-Link method, a data clock may be readily recovered by xe2x80x9cexclusive-OR-ingxe2x80x9d the data and strobe signals.
The cable that is used in the network employing the IEEE 1394 protocol is schematically illustrated in FIG. 2 as cable 200, wherein a first twisted pair cable 202 (sometimes referred to as TP A) and a second twisted pair cable 202xe2x80x2 (sometimes referred to as TP B) are disposed in respective shield layers 201 and 201xe2x80x2, and these shielded twisted pair cables are further disposed within a second shield layer 204 in which power supply lines 203 also are located. Each twisted pair cable provides data and strobe signals to the nodes that are connected thereto. A more detailed description of the electrical interface between the twisted pair cables and the nodes which are connected by these cables is found in Fire Wire System Architecture IEEE 1394, MindShare, Inc., Don Anderson (1998), which is incorporated herein by reference.
As described in the aforementioned text, signaling between nodes is effected by using both TP A and TP B to which strobe and data drivers are connected. Three signal states are used: 1, 0 and Z, wherein the Z state is represented when a driver is disabled. Before signaling commences, arbitration must be conducted among the nodes to select the proper node that is permitted to acquire the bus. Similarly, when devices are connected to or disconnected from the bus, bus topology reconfiguration automatically is conducted; and this bus topology reconfiguration is analogous to bus arbitration. The states 1, 0 and Z are used to represent control signals, such as shown in Tables 1, 2 and 3; and the transmission of arbitration signals are interpreted in the manner represented by Tables 4 and 5.
Device configuration occurs locally on the bus without the intervention of a host processor. Each time a new device, or node, is connected to or disconnected from the bus, the entire bus is reset and reconfigured. This is what has been mentioned above as automatic topology reconfiguration. Bus reconfiguration is executed by first performing bus initialization, then performing tree identification and finally performing self identification. In the bus initialization phase, all the nodes return to their initialized states regardless of their prior configurations. That is, all topology information is cleared from the nodes. The only information known to a node is whether that node is a branch (that is, whether the node is connected to two or more nodes) or a leaf (that is, whether the node is connected to only one other node) or is isolated. FIG. 3A schematically illustrates a network consisting of branch and leaf nodes at the bus initialization phase.
In the tree identification phase, the entire network topology is viewed as a single tree. The aforementioned Fire Wire System Architecture text describes that after tree identification, one node has the status of the root node; and all connections to the root node are identified as xe2x80x9crootxe2x80x9d directions toward the root node. Nodes are connected by connecting one port to another; and the port closest to the root node is referred to as the xe2x80x9cparentxe2x80x9d port. Parent ports are connected to xe2x80x9cchildxe2x80x9d ports; and the node that is connected only to xe2x80x9cchildxe2x80x9d nodes, that is, the node whose ports are connected only to parent ports, is the root node. FIG. 3B illustrates the network after completing the tree identification process; and those ports which are labeled xe2x80x9coffxe2x80x9d are not connected to any further port. It is appreciated that parent ports are labeled xe2x80x9cpxe2x80x9d and child ports are labeled xe2x80x9cchxe2x80x9d. The ports of node B are seen to be connected only to parent ports: the parent port of node A and the parent port of node D.
Following tree identification, the self identification phase takes place. In self identification, physical IDs are assigned to each node; neighboring nodes exchange transmission speed capabilities; and the established network topology is broadcasted to all nodes. This is described more particularly in the aforementioned Fire Wire text. In addition, one of the nodes in the network is designated the management node, and this is used to provide low level management of the nodes and the network and to create a network topology map which identifies the speed capabilities of the respective data paths in the network.
In the self identification phase, the root node determines how many nodes exist in the network, and each node is assigned a unique physical identifier, or ID. An arbitration grant signal (TPA=Z and TPB=0) issues to the lowest numbered port while a data prefix issues to the other ports. The arbitration grant is transferred from each branch node to its lowest numbered port until a leaf node is reached. When the lowest leaf receives the arbitration grant, it assigns to itself the physical ID of 0. The physical ID is broadcast in SELF_ID packets. The self_ID count in all nodes is reset to zero, and the nodes increment their self_ID count after each SELF_ID packet is broadcast. In this manner, the physical ID of a particular node is set to its self_ID count.
In self identification, once a particular node and all the xe2x80x9cchildxe2x80x9d nodes connected thereto have completed their identification processing, that node transmits an xe2x80x9cident_donexe2x80x9d signal. Thereafter, the next higher node, as represented by its self_ID, performs the identification processing. As a result, all of the nodes and particularly the physical ID of the nodes in a reconfiguration, are identified. The self identification process is recognized as being completed when a bus is idle for a subaction gap period. FIG. 3C illustrates the completion of the self identification process in the network, with the nodes being identified by their respective physical IDs. As before, the ch port of the node is connected to a child node and the p port of the node is connected to a parent node.
FIG. 4 represents a state, or transition, diagram of the self identification phase, in which the following states are illustrated: S0 (Self-ID Start), S1 (Self-ID Grant), S2 (Self-ID Receive), S3 (Send Speed Capabilities) and S4 (Self-ID Transmit).
Let it be assumed that nodes a, b and c are connected in the manner shown in FIG. 5. Let it be further assumed that the length of the cable between nodes a and b is 100 m and the length of the cable between nodes b and c is 3 m. In the illustrated configuration, when tree identification is completed, node a is the parent of node b and node b is the parent of node c. When in the self identification phase, node b receives the arbitration signal RX_SELF_ID from node a and node b transmits to node c the arbitration signal TX_GRANT, as shown in FIG. 4. Node c starts to transmit the TX_DATA_PREFIX, whereupon nodes a and b assume their respective SELF_ID packet reception states. Following the transmission of the TX_DATA_PREFIX signal, node c transmits its SELF_ID packet. Node b expects to receive from node c the SELF_ID packet, RX_DATA_END and RX_IDENT_DONE, whereafter node b awaits reception of the RX_SELF_ID_GRANT from node a. However, since the length of cable between node a and node b is 100 m, the transmission delay attributed to this cable is in excess of 500 ns. This means that even after node b completes its transfer of the SELF_ID packet from node c to node a, node b continues to receive from node a the RX_SELF_ID_GRANT arbitration signal that was intended for node c.
Typically, after a predetermined time has elapsed at node b from the time that node b receives the SELF_ID packet from node c, such as after about 500 ns, the state of node b is changed to the state in which node b is ready to send to node a the SELF_ID packet, provided that node b receives from node a the RX_SELF_ID_GRANT. However, as just mentioned, at the conclusion of this predetermined time period, node b is, in fact, receiving the delayed RX_SELF_ID_GRANT from node a. Thus, node b is likely to misinterpret the RX_SELF_ID_GRANT; and, as a result, node b may transmit its own SELF_ID packet at the same time that it is broadcasting the SELF_ID packet received from node c. Consequently, node a will receive SELF_ID packets from node b and from node c, resulting in a malfunction at node a.
If the inherent time delay in the cable between node a and node b is greater than the sum of the duration of the DATA_PREFIX (140 ns) plus the duration of the SELF_ID packet (about 640 ns ) and the duration of the DATA_END (240 ns) then node b will continue to receive the arbitration signal RX_SELF_ID_GRANT from node a and will likely misinterpret this arbitration signal. Since data processing in the nodes is not instantaneous, that is, a discrete time is needed to generate and transmit the aforementioned signals, the problem of misinterpreting arbitration signals at node b is likely to occur if the cable length between node a and node b is about 80 m.
Therefore, it is an object of the present invention to provide a technique that is particularly useful in the self identification phase of configuring a data network in which nodes may be separated by large distances.
Another object of this invention is to provide self identification processing of nodes in a data network in which a large time delay may be present.
A further object of this invention is to provide a technique for preventing the premature transition of a node to an initial state in the self identification phase, thereby obviating ambiguity in interpreting arbitration signals.
Various other objects, advantages and features of the present invention will become readily apparent from the ensuing detailed description, and the novel features will be particularly pointed out in the appended claims.
In accordance with the present invention, a technique is provided for controlling transition to an initial state in the self identification phase of a data network which has a bus to which are connected a given node, a parent node and a child node, and wherein arbitration over acquisition of the bus is performed before data is communicated between the nodes. The initial state is the state whereby a node, such as the given node, is enabled to respond to an arbitration signal received from the parent node. The given node receives a SELF_ID packet representative of the child node, and said given node also receives an arbitration signal (SELF_ID_GRANT) from the parent node which enables the given node to transmit to the parent node a SELF_ID packet representative of the given node. The given node assumes the initial state, from which the SELF_ID packet is permitted to be transmitted from the given node to the parent node, if reception of the arbitration signal from the parent node is completed. However, if the given node continues to receive the arbitration signal from the parent node, the given node does not change to its initial state and, therefore, does not transmit its SELF_ID packet to the parent node.